1. ¿Qué es un contenedor?
Un contenedor es una forma moderna de ejecutar aplicaciones de manera aislada y portable.
La idea principal es:
Aplicación
+ dependencias
+ configuración
=
Contenedor
¿Qué significa esto?
Un contenedor incluye TODO lo necesario para ejecutar una aplicación:
- Código
- Librerías
- Dependencias
- Configuración
- Variables entorno
Problema clásico
Antes ocurría muchísimo:
"En mi ordenador funciona"
Pero al mover la aplicación:
- Faltaban librerías
- Versiones distintas
- Errores configuración
Con contenedores
La aplicación funciona igual en cualquier lugar.
Mini-test
¿Qué incluye un contenedor?
2. El problema tradicional de las aplicaciones
Antes de Docker, desplegar aplicaciones era complicado.
Ejemplo real
Un desarrollador crea aplicación Node.js:
Versión Node.js = 18
Pero el servidor tiene:
Versión Node.js = 14
Resultado
- Errores
- Dependencias incompatibles
- Aplicación rota
Otro problema
Dos aplicaciones pueden necesitar versiones distintas.
Aplicación A → Python 3.8
Aplicación B → Python 3.11
Esto genera conflictos.
Los contenedores solucionan esto
Cada aplicación tiene SU propio entorno aislado.
Mini-test
¿Qué problema solucionan los contenedores?
3. Máquinas virtuales vs contenedores
Máquina virtual (VM)
Una máquina virtual incluye:
- Sistema operativo completo
- Kernel propio
- Aplicaciones
Problema
- Pesadas
- Lentas
- Consumen mucha RAM
Contenedor
El contenedor comparte el kernel del sistema operativo host.
Por eso:
- Es más ligero
- Arranca rápido
- Consume menos recursos
| Máquina Virtual | Contenedor |
|---|---|
| Sistema operativo completo | Comparte kernel |
| Más pesada | Más ligera |
| Arranque lento | Arranque rápido |
Mini-test
¿Qué ventaja tiene un contenedor?
4. ¿Qué es Docker?
Docker es la plataforma más famosa para trabajar con contenedores.
Qué permite Docker
- Crear contenedores
- Ejecutar contenedores
- Compartir aplicaciones
- Desplegar rápidamente
Idea simple
Docker
↓
Gestiona contenedores
Qué hace Docker internamente
- Aísla procesos
- Gestiona redes
- Gestiona imágenes
- Ejecuta aplicaciones
Comandos básicos
docker run
docker build
docker ps
docker stop
Mini-test
¿Qué es Docker?
5. Imágenes y contenedores
Imagen Docker
Una imagen es como una plantilla.
Contiene:
- Aplicación
- Dependencias
- Configuración
Contenedor
Es una instancia en ejecución de una imagen.
Ejemplo fácil
Imagen = receta
Contenedor = comida preparada
Flujo normal
Dockerfile
↓
Imagen
↓
Contenedor
Mini-test
¿Qué es una imagen Docker?
6. Docker paso a paso
Ejecutar un contenedor
docker run nginx
Qué ocurre
- Docker descarga imagen
- Crea contenedor
- Ejecuta NGINX
Ver contenedores activos
docker ps
Detener contenedor
docker stop ID_CONTENEDOR
Eliminar contenedor
docker rm ID_CONTENEDOR
Ver imágenes
docker images
Mini-test
¿Qué comando muestra contenedores activos?
7. Dockerfile explicado desde cero
Un Dockerfile es un archivo con instrucciones para crear imágenes.
Ejemplo sencillo
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]
Explicación línea por línea
FROM
Indica imagen base.
FROM node:18
Usa Node.js versión 18.
WORKDIR
Define carpeta trabajo.
COPY
Copia archivos aplicación.
RUN
Ejecuta comandos.
CMD
Comando inicial del contenedor.
Construir imagen
docker build -t miapp .
Ejecutar imagen
docker run miapp
Mini-test
¿Qué hace COPY?
8. ¿Qué es Kubernetes?
Cuando tenemos MUCHOS contenedores, administrarlos manualmente es difícil.
Problema
Imagina:
- 100 contenedores
- Múltiples servidores
- Muchos usuarios
Kubernetes
Es una plataforma para coordinar contenedores automáticamente.
Qué hace Kubernetes
- Escalado automático
- Distribución carga
- Reinicio automático
- Orquestación contenedores
Qué significa orquestación
Coordinar automáticamente muchos contenedores.
Mini-test
¿Qué hace Kubernetes?
9. Monolitos vs microservicios
Aplicación monolítica
Toda la aplicación está junta.
Frontend
+ backend
+ base datos
=
Gran aplicación única
Problema
- Difícil escalar
- Difícil actualizar
- Difícil mantener
Microservicios
La aplicación se divide en pequeñas partes.
Servicio usuarios
Servicio pagos
Servicio productos
Servicio login
Ventajas
- Escalado independiente
- Más flexible
- Más fácil actualizar
Mini-test
¿Qué ventaja tienen microservicios?
10. Amazon ECS
Amazon ECS (Elastic Container Service) es el servicio AWS para ejecutar contenedores Docker.
Qué hace ECS
- Gestiona contenedores
- Escala automáticamente
- Distribuye carga
- Coordina despliegues
Funcionamiento
Docker containers
↓
Amazon ECS
↓
EC2 o Fargate
Ventaja
AWS administra gran parte de la infraestructura.
Mini-test
¿Qué servicio ejecuta contenedores en AWS?
11. AWS Fargate explicado fácil
Fargate es una tecnología serverless para contenedores.
Problema clásico
Con ECS tradicional:
- Debes administrar EC2
- Escalar servidores
- Gestionar capacidad
Con Fargate
AWS administra servidores automáticamente.
Solo haces esto
Subir contenedor
↓
Ejecutar
Ventajas
- Menos administración
- Escalado automático
- Modelo serverless
Mini-test
¿Qué ventaja tiene Fargate?
12. Amazon EKS
Amazon EKS es el servicio Kubernetes administrado de AWS.
Qué hace
- Ejecutar Kubernetes
- Administrar clusters
- Escalar nodos
- Integrarse con AWS
Diferencia ECS vs EKS
| ECS | EKS |
|---|---|
| Tecnología AWS | Kubernetes estándar |
| Más sencillo | Más complejo |
| Más fácil aprender | Más flexible |
Importante
EKS usa Kubernetes real.
Mini-test
¿Qué servicio usa Kubernetes?
13. Amazon ECR
Amazon ECR (Elastic Container Registry) es un repositorio de imágenes Docker.
Qué almacena
- Imágenes Docker
- Versiones aplicaciones
- Contenedores privados
Flujo típico
Docker build
↓
Imagen Docker
↓
Subir a ECR
↓
ECS descarga imagen
Comandos básicos
docker build -t app .
docker push ecr-url/app
Mini-test
¿Qué almacena ECR?
14. Arquitectura moderna con contenedores
Arquitectura moderna típica
Usuario
↓
Load Balancer
↓
ECS / Kubernetes
↓
Contenedores Docker
↓
Base de datos
Ventajas
- Escalabilidad
- Portabilidad
- Alta disponibilidad
- Automatización
- Despliegue rápido
Qué usan muchas empresas
- Docker
- Kubernetes
- Microservicios
- CI/CD
Idea final importante
Los contenedores cambiaron completamente la forma moderna de desplegar aplicaciones.
Mini-test
¿Qué tecnología coordina contenedores a gran escala?